<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>15_filter</title>
</head>

<body>
  <script>
    /**
     * filter()
     * 语法: 数组.filter( function(item, index, arr) {})
     *    => 函数可以接受三个参数
     *    => 第一个参数: 表示数组内的每一项
     *    => 第二个参数: 表示数组内的每一项的索引
     *    => 第三个参数: 表示原始数组
     * 作用: 过滤数组
     * 返回值: 
     *    => 是一个新数组
     *    => 数组内是原始数组中所有满足条件的项
     *    => 条件以 return 的形式书写
    */


    var arr = [111, 222, 333, 444, 555];
    console.log('原始数组:', arr);

    // 开始过滤
    var result = arr.filter(function a(item) {
      // 以 return 的形式书写过滤条件
      return !(parseInt(item / 100) % 2);
    })
    console.log('返回值:', result);


    /**
     * filter 的原理
     *    1. 准备了一个空数组
     *      => [400, 500]
     *    2. 开始根据原始数据进行遍历
     *      => 第一次调用 a(100, 0, 原始数据), 返回值是 false, 那么 100 不加入新数组
     *      => 第二次调用 a(200, 1, 原始数据), 返回值是 false, 那么 200 不加入新数组
     *      => 第三次调用 a(300, 2, 原始数据), 返回值是 false, 那么 300 不加入新数组
     *      => 第四次调用 a(400, 3, 原始数据), 返回值是 true,  那么 400 加入新数组
     *      => 第五次调用 a(500, 4, 原始数据), 返回值是 true,  那么 500 加入新数组
     *    3. 把 数组最终结果当做 filter 这个方法的返回值
    */

  </script>
</body>

</html>
